#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
修复常见编码问题的脚本
将全角符号替换为半角符号
"""

import os
import re
from pathlib import Path

def fix_encoding_issues(file_path):
    """修复文件中的编码问题"""
    try:
        # 读取文件内容
        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.read()

        # 记录是否有修改
        original_content = content

        # 替换常见的全角符号为半角符号
        replacements = {
            '：': ':',  # 全角冒号 -> 半角冒号
            '，': ',',  # 全角逗号 -> 半角逗号
            '。': '.',  # 全角句号 -> 半角句号
            '！': '!',  # 全角感叹号 -> 半角感叹号
            '？': '?',  # 全角问号 -> 半角问号
            '（': '(',  # 全角左括号 -> 半角左括号
            '）': ')',  # 全角右括号 -> 半角右括号
            '【': '[',  # 全角左方括号 -> 半角左方括号
            '】': ']',  # 全角右方括号 -> 半角右方括号
            '"': '"',  # 全角双引号 -> 半角双引号
            '"': '"',  # 全角双引号 -> 半角双引号
            ''': "'",  # 全角单引号 -> 半角单引号
            ''': "'",  # 全角单引号 -> 半角单引号
        }

        # 执行替换
        for full_width, half_width in replacements.items():
            content = content.replace(full_width, half_width)

        # 如果内容有修改，写回文件
        if content != original_content:
            with open(file_path, 'w', encoding='utf-8') as f:
                f.write(content)
            print(f"✅ 修复了文件: {file_path}")
            return True
        else:
            print(f"⚪ 无需修复: {file_path}")
            return False

    except Exception as e:
        print(f"❌ 修复文件 {file_path} 时出错: {e}")
        return False

def main():
    """主函数"""
    print("🔧 开始修复编码问题...")

    # 要检查的文件类型
    file_patterns = [
        "*.js",
        "*.ts",
        "*.vue",
        "*.json",
        "*.py",
        "*.bat",
        "*.md"
    ]

    fixed_count = 0
    total_count = 0

    # 遍历项目文件
    for pattern in file_patterns:
        for file_path in Path('.').glob(pattern):
            # 跳过node_modules和其他不需要的目录
            if any(skip in str(file_path) for skip in ['node_modules', '.git', 'dist', 'build']):
                continue

            total_count += 1
            if fix_encoding_issues(file_path):
                fixed_count += 1

    print(f"\n📊 修复完成!")
    print(f"总检查文件: {total_count}")
    print(f"修复文件数: {fixed_count}")

    if fixed_count > 0:
        print("\n🎉 编码问题已修复，现在可以重启服务了!")
    else:
        print("\n✨ 没有发现编码问题!")

if __name__ == "__main__":
    main()